package cn.biplam.common.bean.md;

import cn.biplam.common.bean.Bean;
import cn.biplam.common.paramters.MdParam.Fk_Table_Role;
import cn.biplam.common.wrapper.ErrorMessage;

/**
 *  表的所有外键关联关系操作
 * @author XiaoRuxing Oct 10, 20094:07:29 PM
 * @version 1.0
 */
public abstract class MdTableFkRelationAll extends Bean{

	/**
	 * 取关联关系ID
	 * @return String
	 * @throws ErrorMessage
	 */
	public abstract String getReId() throws ErrorMessage;

	/**
	 * 取关联关系名称
	 * @return String
	 * @throws ErrorMessage
	 */
	public abstract String getReName() throws ErrorMessage;

	/**
	 * 取关联关系被参照表ID
	 * @return String
	 * @throws ErrorMessage
	 */
	public abstract String getMainTableId() throws ErrorMessage;
	
	/**
	 * 取关联关系被参照表名称
	 * @return String
	 * @throws ErrorMessage
	 */
	public abstract String getMainTable() throws ErrorMessage;
	
	/**
	 * 取关联关系外键表ID
	 * @return String
	 * @throws ErrorMessage
	 */
	public abstract String getForeingTableId() throws ErrorMessage;
	
	/**
	 * 取关联关系外键表名
	 * @return String
	 * @throws ErrorMessage
	 */
	public abstract String getForeingTable() throws ErrorMessage;

	
	/**
	 * 是否还有外键关联对象
	 * @return	boolean
	 */
	public abstract boolean haveNext();

	/**
	 * 移动指针到下一个
	 */
	public abstract void next();

	/**
	 * 判断对象信息是否存在
	 * @return
	 */
	public abstract boolean exist();
	
	/**
	 *  获取表作为外键表的外键关系操作
	 * @param userID      用户ID
	 * @param modelType   业务对象类型
	 * @param tableId     表id
	 * @return 所有表作为外键表的外键关系
	 * @throws ErrorMessage
	 */
	public static MdTableFkRelationAll getNewInstance(String userID,
			String modelType,String tableId) throws ErrorMessage{
		return (MdTableFkRelationAll)get(MdTableFkRelationAll.class.getSimpleName(),
				userID, modelType, tableId);
	}
	
	/**
	 * 获取与表有关的外键关系操作
	 * @param userID      用户ID
	 * @param modelType  业务对象类型
	 * @param tableId    表id
	 * @param tableRole  表在外键关系中的角色
	 * @return 与表有关的外键关系
	 * @throws ErrorMessage
	 */
	public static MdTableFkRelationAll getNewInstance(String userID,
			String modelType,String tableId, Fk_Table_Role tableRole) throws ErrorMessage{
		return (MdTableFkRelationAll)get(MdTableFkRelationAll.class.getSimpleName(),
				userID, modelType, tableId,tableRole);
	}
	
	/**
	 * 传入表指定信息和表过滤信息初始化
	 * @param userID      	用户ID
	 * @param modelType  	业务对象类型
	 * @param tableId    	表id
	 * @param tableRole  	表在外键关系中的角色
	 * @param tableFilter	表过滤条件(格式:'id','id)
	 * @return	MdTableFkRelationAll
	 * @throws ErrorMessage
	 */
	public static MdTableFkRelationAll getNewInstance(String userID,String modelType,String tableId,
			Fk_Table_Role tableRole,String tableFilter) throws ErrorMessage{
		return (MdTableFkRelationAll)get(MdTableFkRelationAll.class.getSimpleName(),
				userID, modelType,tableId,tableRole,tableFilter);
	}
	
	/** 关系id 字段名 */
	public abstract String getREID();
	/** 关系名称 字段名 */
	public abstract String getRE_NAME();
	/** 主表id 字段名 */
	public abstract String getMAIN_TABLE_ID();
	/** 外键表id 字段名 */
	public abstract String getFOREIGN_TABLE_ID();
}
